The present invention relates to a method and apparatus for monitoring software license compliance and more particularly to a method and apparatus for collating, correlating, and redistributing information about events and conditions pertaining to the installation and use of documents and images generally including licensed computer software products.
This Application is related to Ser. No. 08/531,928, filed Sep. 21, 1995, now U.S. Pat. No. 5,590,056 which is a Continuation of Ser. No. 08/180,218 filed Jan. 3, 1994, now U.S. Pat. No. 5,499,340.
Much of the software used on mainframe computers, minicomputers, work stations, and personal computers consists of proprietary software licensed from software vendors. Like book publishers, many software vendors retain the copyright on their products, and a software product license usually restricts the licensee's use of the product in several ways.
Software products are usually obtained under a perpetual license, which is equivalent to buying a copy of a book, but are sometimes licensed on a renewable basis, which is equivalent to borrowing a book from a rental library. In either case, the scope of use of the software products is almost always further proscribed.
Software products are often licensed for use only on particular computers, as determined by their serial numbers, or for use on a maximum number of computers, or for use on a maximum aggregate amount of computing power (typically measured in MIPS, millions of instructions per second), products may be licensed only for use by certain named user or by a stipulated maximum number of concurrent users.
Products may also be licensed based on particular usage metrics, as appropriate for the product in question. For example, a sorting product might be licensed based on how many sort operations the licensee uses it for, based on the number of bytes of data sorted, on the number of records sorted, or on some combination of these factors. A product providing database inquiry capability might be licensed based on the number of inquiries performed, perhaps weighted by the complexity level of each inquiry. A product that performs a number of disparate scientific or engineering calculations might assign a charge-value for each type of calculation and, then base license fees on the aggregate of these values. Or, it might instead simply keep track of the total CPU-time used in performing calculations, and base licenses on this value.
Licenses based on usage metrics may be of the "electric meter" type, in which actual usage is measured, and paid for by the licensee on a periodic basis (monthly, quarterly, etc.). Licenses may be based on a mutually agreed-to "cap", such that any amount of usage that does not exceed the cap is covered by a fixed periodic payment, or perhaps by a single initial payment, with additional fees due only if the cap is exceeded in a given measurement period. This latter arrangement is similar to the maintenance contracts on office copiers, commonly permitting no more than, but any amount fewer than, a stated maximum number of copies per month.
The various licensing mechanisms described above may be elaborated or combined in whatever way the vendor of each software product may choose.
Several trends in the data processing industry are hastening the move away from the more simple types of licenses, for specific computers for example, toward the more complicated licenses. Mainframe computers are evolving into "complexes" of linked computers, with all computing work eligible to run on any available computer in the complex. In such an environment, if software were licensed for use on specific computers, each software product would have to be licensed on all the computers of a complex, no matter how infrequently or non-intensively the product is to be used. Licenses based on usage metrics are much better aligned with the actual value that the end-user derives from the licensed software.
Similarly, the rise of distributed and client-server computing, and of the Internet as a vehicle for distributed computing (e.g., Java), have put strains on the total-user or concurrent-user licensing terms that are common in these environments.
These factors make it increasingly necessary for vendors to have access to ongoing information as to how, where, to what extent, and by whom their software is being used. In order to control the use of licensed software to prevent authorized levels being exceeded, it is increasingly necessary to provide "authorization codes" to users that tell the licensed software product, during its operation, the applicable limits.
Some software products incorporate functions and facilities that monitor their own usage and enforce license terms (for example, by limiting the number of concurrent users of the product, or limiting usage to registered user who sign on with unique passwords), or which merely report on usage and warn of usage beyond the terms of the license. In many cases, these functions are provided by products supplied by third-party vendors to be incorporated by software developers.
In addition to facilities meant to be incorporated into other products on an individual basis, software products exist for gathering the required information from several different products, either with or without the cooperation of the products to be monitored. These tools operate on the user's computer system or network, and gather information as to what is installed and what is used on that system or network, as well as the type and particulars of the usage. For example, the assignee of the present invention vends two such products that operate on mainframe computers, SoftAudit and LicensePower. There are dozens of products from other vendors that gather some of the described information in other environments, such as networks, client-servers, desktops, or the Internet. But all of these products provide information to the computer user, and the information itself typically pertains to a plurality of software products, often licensed from a number of different vendors. Should the user wish, or be required, to transmit to one or more vendors the information pertaining to the products licensed from them, the user would have to manually extract, gather, and collate the information by vendor and product, then separately transmit appropriate information to each vendor.
Disadvantageously, vendors who require this information from their licensees would receive separately transmitted information from each such licensee.